Completed
Pull Request — master (#6)
by Janis
04:05
created

Ocr.initialize   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 10
rs 9.4285
c 1
b 0
f 0
cc 1
nc 1
nop 0
1
/**
2
 * nextCloud - ocr
3
 *
4
 * This file is licensed under the Affero General Public License version 3 or
5
 * later. See the COPYING file.
6
 *
7
 * @author Janis Koehr <[email protected]>
8
 * @copyright Janis Koehr 2016
9
 */
10
(function() {
11
12
	var OCR_ALLOWED_MIMETYPES = ['application/pdf', 'image/png', 'image/jpeg', 'image/tiff'];
13
14
	/**
15
	 * Constructor of the ocr object.
16
	 * This object holds all our ocr stuff.
17
	 * processing state, available languages, etc.
18
	 * @param baseUrl
19
	 * @constructor
20
	 */
21
	var Ocr = function (baseUrl) {
22
		this._baseUrl = baseUrl;
23
		this._languages = [];
24
		this._status = [];
25
	};
26
27
	/**
28
	 * Class prototype for Ocr. Following functions are available:
29
	 */
30
	Ocr.prototype = {
31
		getLanguages: function () {
32
			var self = this;
33
			return self._languages;
34
		},
35
		getStatus: function () {
36
			var self = this;
37
			return self._status;
38
		},
39
		/**
40
		 * AJAX call.
41
		 * Loads all available languages.
42
		 * @returns $.Deferred()
43
		 */
44
		loadAllLanguages: function () {
45
			var deferred = $.Deferred();
46
			var self = this;
47
			$.get(self._baseUrl).done(function (languages) {
48
				self._languages = languages;
49
				deferred.resolve(languages);
50
			}).fail(function (jqXHR) {
51
				deferred.reject(jqXHR.responseText);
52
			});
53
			return deferred.promise();
54
		},
55
		process: function(selectedFiles, selectedLanguage){
56
			var self = this;
57
			var deferred = $.Deferred();
58
			if(self.checkMimeTypes(selectedFiles)){
59
				var data = {language: selectedLanguage, files: selectedFiles};
60
				$.ajax({
61
					url: self._baseUrl,
62
					method: 'POST',
63
					contentType: 'application/json',
64
					data: JSON.stringify(data)
65
				}).done(function () {
66
					deferred.resolve();
67
				}).fail(function (jqXHR) {
68
					deferred.reject(jqXHR.responseText);
69
				});
70
			}else{
71
				deferred.reject('Files have wrong mimetypes.');
72
			}
73
			return deferred.promise();
74
		},
75
		checkStatus: function () {
76
			var deferred = $.Deferred();
77
			var self = this;
78
			/** global: OC */
79
			$.get(OC.generateUrl('/apps/ocr/status')).done(function (status) {
80
				self._status = status;
81
				deferred.resolve(status);
82
			}).fail(function (jqXHR) {
83
				deferred.reject(jqXHR.responseText);
84
			});
85
			return deferred.promise();
86
		},
87
		checkMimeTypes: function (selectedFiles) {
88
			var correct = true;
89
			selectedFiles.forEach(function(file){
90
				if(file.type != 'file' || $.inArray(file.mimetype, OCR_ALLOWED_MIMETYPES) == -1){
91
					correct = false;
92
				}
93
			});
94
			return correct;
95
		},
96
		initialize: function () {
97
			var self = this;
98
			var deferred = $.Deferred();
99
			self.loadAllLanguages().done(function(){
100
				deferred.resolve();
101
			}).fail(function(message){
102
				deferred.reject(message);
103
			});
104
			return deferred.promise();
105
		}
106
	};
107
	/** global: OCA */
108
	if (OCA.Ocr) {
109
		OCA.Ocr.Ocr = Ocr;
110
	}
111
})();